#ifndef GY_GRAPHICALOBJECT_H
#define GY_GRAPHICALOBJECT_H

#include <QGraphicsItem>
#include "GY_ContainerTransform.h"
#include "GY_ControlLibrary_global.h"

class GY_CONTROLLIBRARY_EXPORT GY_GraphicalObject : public GY_ContainerTransform
{
    Q_OBJECT
public:
    explicit Q_INVOKABLE GY_GraphicalObject(const QString &guid,QGraphicsItem *parent = nullptr);
    /**
     * @brief addNewAttribute 增加自定义属性
     * @param name 属性名称
     * @param value 属性值
     * @return 是否增加成功
     */
    bool addAttribute(const QString &name, const QVariant &value);
    /**
     * @brief addNewAttribute 删除自定义属性
     * @param name 属性名称
     * @param value 属性值
     * @return 是否删除成功
     */
    bool deleteAttribute(const QString &name, const QVariant &value);

    void setContainerEditPointF();

private:
    /**
     * @brief initializationPropertyInfo 初始化属性信息
     */
    void initializationPropertyInfo();
    /**
     * @brief updatePosition 更新位置
     * @param name 属性名称
     * @param value 位置
     * @return 是否更新成功
     */
    bool updatePosition(const QString &name, const QVariant &value);
    /**
     * @brief updateAttribute 更新自定义属性
     * @param name 属性名称
     * @param value 自定义属性
     * @return 是否更新成功
     */
    bool updateAttribute(const QString &name, const QVariant &value);

};

#endif // GY_GRAPHICALOBJECT_H
